package com.example.demo.mapper;

import com.example.demo.entity.Employee;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 员工数据访问接口
 * MyBatis Mapper接口，用于员工表的数据库操作
 */
@Mapper
public interface  EmployeeMapper {
    /**
     * 查询所有员工信息
     * @return 员工列表
     */
    List<Employee> selectAll();

    /**
     * 根据ID查询员工信息
     * @param id 员工ID
     * @return 单个员工对象
     */
    @Select("select * from employee where id = #{id}")
    Employee selectById(Integer id);

    /**
     * 添加新员工
     * @param employee 员工对象，包含姓名、性别、年龄、描述信息
     * @return 受影响的行数（1表示成功，0表示失败）
     */
    @Insert("insert into employee (name, gender, age, `describe`) values (#{name}, #{gender}, #{age}, #{describe})")
    int add(Employee employee);

    /**
     * 更新员工信息
     * @param employee 员工对象，包含ID、姓名、性别、年龄、描述信息
     * @return 受影响的行数（1表示成功，0表示失败）
     */
    @Update("update employee set name = #{name}, gender = #{gender}, age = #{age}, `describe` = #{describe} where id = #{id}")
    int update(Employee employee);

    /**
     * 删除员工信息
     * @param id 员工ID
     * @return 受影响的行数（1表示成功，0表示失败）
     */
    @Delete("delete from employee where id = #{id}")
    int delete(Integer id);

  
    /**
     * 批量删除员工
     * @param ids 员工ID列表
     * @return 受影响的行数
     */
    int deleteByIds(@Param("ids") List<Integer> ids);
}
